/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.despachadores;

import java.util.*;
import pe.gob.pnp.actions.*;
import java.sql.*;
import oracle.jdbc.OracleTypes;
import pe.gob.pnp.factories.ConnectionPool;

/**
 *
 * @author Administrador
 */
public class BeneficioDespachador {

    public static List<Beneficio> obtenerBeneficio() throws SQLException
    {
         List<Beneficio> lstBeneficio = new ArrayList<Beneficio>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_OBTENER_BENEFICIO(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs = (ResultSet) cs.getObject(1);
            while (rs.next())
            {
                Beneficio beneficio = new Beneficio();
                beneficio.setNbeneIdentificador(rs.getInt("NBENE_IDENTIFICADOR"));
                beneficio.setCbeneDescripcion(rs.getString("CBENE_DESCRIPCION"));
                beneficio.setBbeneActivo(rs.getBoolean("BBENE_ACTIVO"));
                beneficio.setNbeneMonto(rs.getInt("NBENE_MONTO"));
                beneficio.setNconcIdentificador(rs.getInt("NCONC_IDENTIFICADOR"));
                beneficio.setNgradIdentificador(rs.getInt("NGRAD_IDENTIFICADOR"));
                beneficio.setCconcDescripcion(rs.getString("CCONC_DESCRIPCION"));
                beneficio.setCgradDescripcion(rs.getString("CGRAD_DESCRIPCION"));
                lstBeneficio.add(beneficio);
            }
        }finally{
          ConnectionPool.liberarConexion(conn);
        }
        return lstBeneficio;
    }

    public static void agregarBeneficio(Beneficio beneficio)throws SQLException
    {
        Connection conn = null;
       
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_AGREGAR_BENEFICIO(?,?,?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, beneficio.getCbeneDescripcion());
            cs.setInt(2, beneficio.isBbeneActivo()? 1:0);
            cs.setInt(3, beneficio.getNbeneMonto());
            cs.setInt(4, beneficio.getNconcIdentificador());
            cs.setInt(5, beneficio.getNgradIdentificador());
            
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

   public static void modificarBeneficio(Beneficio beneficio)throws SQLException
   {
       Connection conn = null;

        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_MODIFICAR_BENEFICIO(?,?,?,?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, beneficio.getCbeneDescripcion());
            cs.setInt(2, beneficio.isBbeneActivo()? 1:0);
            cs.setInt(3, beneficio.getNbeneMonto());
            cs.setInt(4, beneficio.getNconcIdentificador());
            cs.setInt(5, beneficio.getNgradIdentificador());
            cs.setInt(6, beneficio.getNbeneIdentificador());

            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
   }
   public static void agregarBeneficioTramite(BeneficioSolicitaBean beneficio) throws SQLException {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "INSERT INTO SISMA_BENEFICIOSOLICITA(NBESO_IDENTIFICADOR,";
            sql += "NTRAM_IDENTIFICADOR,NTIBE_IDENTIFICADOR,DBESO_FECHACREACION,";
            sql += "BBESO_ELIMINADO) ";
            sql += "VALUES(SEQ_NBESO_IDENTIFICADOR.NEXTVAL,?,?,SYSDATE,0)";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, beneficio.getNtramidentificador());
            ps.setInt(2, beneficio.getNtibeidentificador());
            ps.executeUpdate();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

}
